﻿define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'ai-helper'], function ($, undefined, Backend, Table, Form, AiHelper) {
    var Controller = {
        index: function () {
            // 初始化表格参数配置
            Table.api.init({
                extend: {
                    index_url: 'community/project/setcourse/index' + location.search,
                    add_url: 'community/project/setcourse/add',
                    edit_url: 'community/project/setcourse/edit',
                    del_url: 'community/project/setcourse/del',
                    multi_url: 'community/project/setcourse/multi',
                    table: 'community_project_setcourse',
                }
            });
            
            // 定义全局变量存储当前选中的项目 ID
            window.currentSelectedProjectId = 0;
            
            // 项目选择框变化时更新全局变量
            $(document).on("change", "#project-select", function() {
                window.currentSelectedProjectId = $(this).val() || 0;
            });
            
            // 初始化时设置全局变量
            window.currentSelectedProjectId = $("#project-select").val() || 0;
            
            // 重写添加按钮的URL
            $(document).on('click', '.btn-add', function () {
                var publicwelfare_id = window.currentSelectedProjectId;
                var url = Table.api.defaults.extend.add_url;
                if (publicwelfare_id > 0) {
                    url += (url.indexOf("?") > -1 ? "&" : "?") + "publicwelfare_id=" + publicwelfare_id;
                }
                
                // 打印调试信息
                // 打开添加窗口并传递项目 ID
                var options = $.extend({}, $(this).data() || {});
                options.callback = function(index, layero) {
                    // 当窗口加载完成后的回调
                    var iframe = $(layero).find('iframe')[0];
                    if (iframe && iframe.contentWindow) {
                        try {
                            // 尝试设置项目选择框的值
                            var select = iframe.contentWindow.document.getElementById('c-publicwelfare_id');
                            if (select && publicwelfare_id > 0) {
                                // 使用setTimeout确保选择框已经初始化
                                setTimeout(function() {
                                    select.value = publicwelfare_id;
                                    $(select).trigger('change');
                                }, 500);
                            }
                        } catch (e) {
                        }
                    }
                };
                Fast.api.open(url, __('Add'), options);
                return false;
            });
            
            // 调试信息
            console.log("Current project select value:", $("#project-select").val());

            var table = $("#table");

            // 项目下拉选择框变化事件
            $(document).on("change", "#project-select", function () {
                var publicwelfare_id = $(this).val();
                table.bootstrapTable('refresh', {query: {publicwelfare_id: publicwelfare_id}});
            });

            // 初始化表格
            table.bootstrapTable({
                url: $.fn.bootstrapTable.defaults.extend.index_url,
                pk: 'id',
                sortName: 'id',
                sortOrder: 'desc',
                rememberOrder: true,                columns: [
                    [
                        {checkbox: true},
                        {field: 'id', title: __('Id'), sortable: true},
                        {field: 'school_name', title: __('School_name'), operate: 'LIKE', sortable: true, searchable: true},
                        {field: 'district_name', title:'社区名称',  operate: 'LIKE', sortable: true, searchable: true},
                        {field: 'project_name', title: __('Project_name'), operate: 'LIKE', sortable: true, searchable: true},
                        {field: 'course_name', title: __('Course_name'), operate: 'LIKE', sortable: true, searchable: true},
                        {field: 'teaching_unit', title: '主讲单位', operate: 'LIKE', sortable: true, searchable: true},
                        {field: 'course_image', title: '课程图片', operate: false, events: Table.api.events.image, formatter: Table.api.formatter.image},
                        {
                            field: 'course_description',
                            title: '课程介绍',
                            operate: 'LIKE',
                            width: '200px',
                            formatter: function(value, row, index) {
                                return '<div style="max-width: 200px; word-wrap: break-word; white-space: normal;">' + value + '</div>';
                            }
                        },
                        {field: 'community_id', title: __('Community_id'), visible: false, operate: 'LIKE'}, // 如果不需要显示社区ID，可以隐藏
                        {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime, sortable: true},
                        {field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime, sortable: true},
                        {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
                    ]
                ]
            });

            // 初始化搜索表单
            var searchForm = $(".form-commonsearch");
            Form.api.bindevent(searchForm);
            
            // 添加快捷搜索功能
            $(document).on("click", ".btn-quick-search", function () {
                var value = $("input[name='search']").val();
                table.bootstrapTable('refresh', {query: {search: value}});
            });
            $(document).on("keyup", "input[name='search']", function (event) {
                if (event.keyCode === 13) {
                    $(".btn-quick-search").trigger("click");
                    event.preventDefault();
                }
            });

            // 监听表格刷新按钮
            $(document).on('click', '.btn-refresh', function() {
                // 获取当前选中的项目ID，如果没有选中则取第一个选项
                var projectId = $("#project-select").val() || $("#project-select option:first").val() || 0;
                // 确保全局变量同步
                window.currentSelectedProjectId = projectId;

                // 刷新表格
                refreshTableWithProject(projectId);
                return false;
            });


            
            // 为表格绑定事件
            Table.api.bindevent(table);
            
            // 初始化辅助脚本
            Helper.init();
        },
        add: function () {
            // 初始化表单
            Form.api.bindevent($("#edit-form"));
            
            // 获取URL中的项目ID参数
            var getUrlParam = function(name) {
                var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
                var r = window.location.search.substr(1).match(reg);
                if (r != null) return unescape(r[2]); return null;
            };
            
            // 设置项目选择框的值
            var publicwelfare_id = getUrlParam('publicwelfare_id');
            if (publicwelfare_id) {
                // 确保选择器初始化完成后再设置值
                setTimeout(function() {
                    $("#c-publicwelfare_id").val(publicwelfare_id).trigger('change');
                }, 100);
            }

            // 初始化AI助手
            AiHelper.init({
                baseUrl: 'ai/ai/'
            });

            // AI生成课程介绍功能
            $(document).on('click', '[data-ai-generate-text]', function() {
                var $btn = $(this);
                var targetId = $btn.data('target-id');
                var promptTemplate = $btn.data('prompt-template');
                var $target = $('#' + targetId);
                var courseName = $('#c-course_name').val();

                if (!courseName) {
                    Layer.msg('请先输入课程名称', {icon: 2});
                    return;
                }

                // 替换模板中的变量
                var prompt = promptTemplate.replace('{course_name}', courseName);

                var originalText = $btn.html();
                $btn.prop('disabled', true).html('<i class="fa fa-spinner fa-spin"></i> 生成中...');

                // 调用AI生成文本接口
                $.ajax({
                    url: 'ai/ai/generateText',
                    type: 'POST',
                    data: {
                        prompt: prompt,
                        max_tokens: 500
                    },
                    dataType: 'json',
                    success: function(response) {
                        if (response.code === 1) {
                            $target.val(response.data.content);
                            Layer.msg('课程介绍生成成功！', {icon: 1});
                        } else {
                            Layer.msg(response.msg || '生成失败', {icon: 2});
                        }
                    },
                    error: function() {
                        Layer.msg('网络错误，请重试', {icon: 2});
                    },
                    complete: function() {
                        $btn.prop('disabled', false).html(originalText);
                    }
                });
            });

           // AI生成图片的prompt设置
            $(document).on('click', '.ai-generate-image', function(e) {
                e.preventDefault();
                var $button = $(this);
                var courseName = $('#c-course_name').val();
                var teachingUnit = $('#c-teaching_unit').val();
                
                if (!courseName) {
                    Layer.msg('请先输入课程名称', {icon: 2});
                    return;
                }
                
                // 构建图片生成的prompt
                var prompt = '为课程"' + courseName + '"设计一张专业的课程封面图片';
                if (teachingUnit) {
                    prompt += '，主讲单位是' + teachingUnit;
                }
                prompt += '。图片应该具有教育性、专业性和吸引力，适合作为在线课程的封面。';
                
                // 设置prompt到按钮的data属性中
                $button.attr('data-say', prompt);
                
                // 调用AI助手生成图片
                if (typeof AiHelper !== 'undefined') {
                    AiHelper.generateImageByButton($button);
                } else {
                    Layer.msg('AI助手未加载', {icon: 2});
                }
            });
            
            
            // 表单提交处理
            $('form').on('submit', function(e) {
                e.preventDefault();
                var form = $(this);
                $.ajax({
                    url: form.attr('action'),
                    type: 'POST',
                    data: form.serialize(),
                    dataType: 'json',
                    success: function(ret) {
                        if (ret.code === 1) {
                            parent.Layer.closeAll();
                            parent.Layer.msg(ret.msg, {icon: 1});
                            
                            // 获取父窗口当前选中的项目 ID
                            var parentSelectedProject = 0;
                            try {
                                if (parent.window.currentSelectedProjectId) {
                                    parentSelectedProject = parent.window.currentSelectedProjectId;
                                } else if (parent.$("#project-select").length > 0) {
                                    parentSelectedProject = parent.$("#project-select").val() || 0;
                                }
                            } catch (e) {
                            }
                            
                            // 刷新父窗口表格，并传递项目 ID 参数
                            if (parentSelectedProject > 0) {
                                parent.$("table").bootstrapTable('refresh', {query: {publicwelfare_id: parentSelectedProject}});
                            } else {
                                parent.$("table").bootstrapTable('refresh');
                            }
                        } else {
                            Layer.msg(ret.msg, {icon: 2});
                        }
                    }
                });
                return false;
            });
        },
        edit: function () {
            // 初始化表单
            Form.api.bindevent($("#edit-form"));
            
            // 初始化AI助手
            AiHelper.init({
                baseUrl: 'ai/ai/'
            });
            
            // AI生成课程介绍功能
            $(document).on('click', '[data-ai-generate-text]', function() {
                var $btn = $(this);
                var targetId = $btn.data('target-id');
                var promptTemplate = $btn.data('prompt-template');
                var $target = $('#' + targetId);
                var courseName = $('#c-course_name').val();
                
                if (!courseName) {
                    Layer.msg('请先输入课程名称', {icon: 2});
                    return;
                }
                
                // 替换模板中的变量
                var prompt = promptTemplate.replace('{course_name}', courseName);
                
                var originalText = $btn.html();
                $btn.prop('disabled', true).html('<i class="fa fa-spinner fa-spin"></i> 生成中...');
                
                // 调用AI生成文本接口
                $.ajax({
                    url: 'ai/ai/generateText',
                    type: 'POST',
                    data: {
                        prompt: prompt,
                        max_tokens: 500
                    },
                    dataType: 'json',
                    success: function(response) {
                        if (response.code === 1) {
                            $target.val(response.data.content);
                            Layer.msg('课程介绍生成成功！', {icon: 1});
                        } else {
                            Layer.msg(response.msg || '生成失败', {icon: 2});
                        }
                    },
                    error: function() {
                        Layer.msg('网络错误，请重试', {icon: 2});
                    },
                    complete: function() {
                        $btn.prop('disabled', false).html(originalText);
                    }
                });
            });
            
            // AI生成图片的prompt设置
            $(document).on('click', '.ai-generate-image', function(e) {
                e.preventDefault();
                var $button = $(this);
                var courseName = $('#c-course_name').val();
                var teachingUnit = $('#c-teaching_unit').val();
                
                if (!courseName) {
                    Layer.msg('请先输入课程名称', {icon: 2});
                    return;
                }
                
                // 构建图片生成的prompt
                var prompt = '为课程"' + courseName + '"设计一张专业的课程封面图片';
                if (teachingUnit) {
                    prompt += '，主讲单位是' + teachingUnit;
                }
                prompt += '。图片应该具有教育性、专业性和吸引力，适合作为在线课程的封面。';
                
                // 设置prompt到按钮的data属性中
                $button.attr('data-say', prompt);
                
                // 调用AI助手生成图片
                if (typeof AiHelper !== 'undefined') {
                    AiHelper.generateImageByButton($button);
                } else {
                    Layer.msg('AI助手未加载', {icon: 2});
                }
            });
            
            // 表单提交处理
            $('form').on('submit', function(e) {
                e.preventDefault();
                var form = $(this);
                $.ajax({
                    url: form.attr('action'),
                    type: 'POST',
                    data: form.serialize(),
                    dataType: 'json',
                    success: function(ret) {
                        if (ret.code === 1) {
                            parent.Layer.closeAll();
                            parent.Layer.msg(ret.msg, {icon: 1});
                            
                            // 获取父窗口当前选中的项目 ID
                            var parentSelectedProject = 0;
                            try {
                                if (parent.window.currentSelectedProjectId) {
                                    parentSelectedProject = parent.window.currentSelectedProjectId;
                                } else if (parent.$("#project-select").length > 0) {
                                    parentSelectedProject = parent.$("#project-select").val() || 0;
                                }
                            } catch (e) {
                            }
                            
                            // 刷新父窗口表格，并传递项目 ID 参数
                            if (parentSelectedProject > 0) {
                                parent.$("table").bootstrapTable('refresh', {query: {publicwelfare_id: parentSelectedProject}});
                            } else {
                                parent.$("table").bootstrapTable('refresh');
                            }
                        } else {
                            Layer.msg(ret.msg, {icon: 2});
                        }
                    }
                });
                return false;
            });
        }
    };
    return Controller;
});